/* eslint-disable no-console */
const mongoose = require('mongoose');

const { Schema } = mongoose;
// 1. 连接数据库
// 指定连接的数据库不需要存在，当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost/test1');

// 2. 设计文档结构（表结构）
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性，不要有脏数据
const CatSchema = new Schema({
  name: {
    type: String,
    required: true,
  },
});

//  3. 将文档结构发布为模型
//    mongoose.model 方法就是用来将一个架构发布为 model
//    第一个参数：传入一个大写名词单数字符串用来表示你的数据库名称
//                 mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
//                 例如这里的 User 最终会变为 users 集合名称
//    第二个参数：架构 Schema
//
//    返回值：模型构造函数
// const Cat = mongoose.model('Cat', { name: String });
const Cat = mongoose.model('Cat', CatSchema);
// 新增数据
// const kimmy = new Cat({ name: 'Cancer' });
// kimmy.save((err) => { if (!err) console.log('success'); });

// 查询全部
// Cat.find((err, data) => {
//   if (err) {
//     console.log(err);
//   } else {
//     console.log(data);
//   }
// });

// 查询单个
// Cat.findById('5de8bbe70cb0a143dcdad6d3', (err, data) => {
//   if (err) {
//     console.log(err);
//   } else {
//     console.log(data);
//   }
// });

// 删除
// Cat.deleteOne({ name: 'Cancer' }, (err, data) => {
//   if (err) {
//     console.log(err);
//   } else {
//     console.log(data);
//   }
// });

// 更新
// Cat.update({ name: 'Kim' }, { id: '1', name: '6657' }, (err, data) => {
//   if (err) { console.log(err); } else { console.log(data); }
// });
